//format说明
// amd – 异步模块定义，用于像RequireJS这样的模块加载器
// cjs – CommonJS，适用于 Node 和 Browserify/Webpack
// es – 将软件包保存为ES模块文件
// iife – 一个自动执行的功能，适合作为<script>标签。（如果要为应用程序创建一个捆绑包，您可能想要使用它，因为它会使文件大小变小。）
// umd – 通用模块定义，以amd，cjs 和 iife 为一体
import fs from 'fs';
import del from "del";
import copy from 'rollup-plugin-copy'
import banner from 'rollup-plugin-banner'
import replace from 'rollup-plugin-replace';
//删除之前的源映射文件，
del.sync(['dist/*.js', 'dist/*.js.map',
    'build/rollup/building/index.js', 'build/rollup/building/shared.js', 'build/rollup/building/worker.js',
    'demo/w3d.js', 'demo/w3d.js.map', 'demo/w3d.min.js']);
//重新生成
console.log("开始打包 ...");
const pkg = require('./package.json');
const mode = process.env.NODE_ENV;
import { terser } from 'rollup-plugin-terser';
// 测试版-{实体}
const bannerPlugin = {
    'banner': `
@author ${pkg.author}
@version ${pkg.version}
@createTime ${new Date().toDateString()} - ${new Date().toTimeString()}
`
};
export default [
    {
        input: ['./src/index.js', './src/process/worker/worker.js'],
        output: [{
            dir: `./build/rollup/building`,
            format: 'amd',
            sourcemap: 'inline',
            indent: false,
            chunkFileNames: 'shared.js'
        }],
        plugins: [
            mode === "prod" ? terser(
                {
                    compress: {
                        drop_console: false,
                        drop_debugger: false,
                    },mangle:{
                        keep_classnames:false,
                    },
                }
            ) : false,//压缩
            mode === "dev" ? replace({
                'ec:300': 'ec:10000000000'
            }) : false,
        ],
        treeshake: true,//treeshake 进行静态分析，把没有引用的代码去掉
    },
    {
        input: './build/rollup/index.js',
        output: [{
            //'file': mode === "prod" ?'dist/w3d.min.js':'dist/w3d.js',
            'file': 'dist/w3d.js',
            'format': "umd",
            'strict': true,
            'name': "w",
            'sourcemap': mode === "prod" ? false : true,
            intro: fs.readFileSync(require.resolve('./build/rollup/prelude.js'), 'utf8'),
        }],
        treeshake: false,
        plugins: [
            banner(bannerPlugin.banner),
            copy({
                targets: [
                    // 复制源，支持 glob 语法
                    { src: 'dist/*.js', dest: 'demo/' },
                ],
                hook: 'writeBundle',
                // 是否将源文件删除
                copyOnce: false,
            })
        ]

    }
];
